ACIDμ BASE λ°μ΄ν°λ² μ΄μ€ μΌκ΄μ± λͺ¨λΈμ κ·Όλ³Έμ μΈ μ°¨μ΄μ , νΈλ μ΄λ μ€ν, κ·Έλ¦¬κ³ μνΈ μ°κ²°λ κΈλ‘λ² λμ§νΈ μΈκ³μμ μ ν리μΌμ΄μ μ λ―ΈμΉλ μν₯μ μ΄ν΄λ³΄μΈμ.
ACID vs BASE: κΈλ‘λ² λμ§νΈ νκ²½μ μν λ°μ΄ν°λ² μ΄μ€ μΌκ΄μ± λͺ¨λΈ μ΄ν΄
μ€λλ μ μ΄μ°κ²° μΈμμμ λ°μ΄ν°λ λλ₯μ λμ΄ νλ₯΄κ³ μ ν리μΌμ΄μ μ κΈλ‘λ² μ¬μ©μ κΈ°λ°μ μλΉμ€λ₯Ό μ 곡ν©λλ€. λ°μ΄ν° μΌκ΄μ±μ 보μ₯νλ κ²μ λ§€μ° μ€μν©λλ€. κ·Έλ¬λ λΆμ° μμ€ν μ λ³Έμ§ μμ²΄κ° μ΄λ¬ν μΌκ΄μ±μ μ μ§νλ λ° λ³΅μ‘ν κ³Όμ λ₯Ό μΌκΈ°ν©λλ€. λ°λ‘ μ¬κΈ°μ ACIDμ BASE λ°μ΄ν°λ² μ΄μ€ μΌκ΄μ± λͺ¨λΈμ κ°λ μ΄ μμ©ν©λλ€. κ·Όλ³Έμ μΈ μ°¨μ΄μ , νΈλ μ΄λ μ€ν, κ·Έλ¦¬κ³ κ·Έ μλ―Έλ₯Ό μ΄ν΄νλ κ²μ νλ λμ§νΈ νκ²½μ νμνλ λͺ¨λ κ°λ°μ, μ€κ³μ λλ λ°μ΄ν° μ λ¬Έκ°μκ² λ§€μ° μ€μν©λλ€.
νΈλμμ 무결μ±μ ν΅μ¬: ACID
ACIDλ μμμ±(Atomicity), μΌκ΄μ±(Consistency), 격리μ±(Isolation) λ° μ§μμ±(Durability)μ λνλ΄λ μ½μ΄μ λλ€. μ΄ λ€ κ°μ§ μμ±μ κΈ°μ‘΄ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€(SQL λ°μ΄ν°λ² μ΄μ€)μμ μμ μ μΈ νΈλμμ μ²λ¦¬λ₯Ό μν κΈ°λ°μ νμ±ν©λλ€. ACID νΈν μμ€ν μ λ°μ΄ν°λ² μ΄μ€ νΈλμμ μ΄ μμ μ μΌλ‘ μ²λ¦¬λκ³ μ€λ₯, μ μ λλ κΈ°ν μμ€ν μ€λ¨μ΄ λ°μνλλΌλ λ°μ΄ν°λ² μ΄μ€κ° μ ν¨ν μνλ₯Ό μ μ§νλλ‘ μ€κ³λμμ΅λλ€.
μμμ±: μ λΆ λλ μ 무
μμμ±μ νΈλμμ μ΄ λ¨μΌνκ³ λΆκ°λΆν μμ λ¨μλ‘ μ²λ¦¬λλλ‘ λ³΄μ₯ν©λλ€. νΈλμμ λ΄μ λͺ¨λ μμ μ΄ μ±κ³΅μ μΌλ‘ μλ£λκ±°λ μ ν μλ£λμ§ μμ΅λλ€. νΈλμμ μ μΌλΆλΌλ μ€ν¨νλ©΄ μ 체 νΈλμμ μ΄ λ‘€λ°±λμ΄ λ°μ΄ν°λ² μ΄μ€κ° νΈλμμ μ΄ μμλκΈ° μ μ μνλ‘ λλμκ°λλ€.
μμ: λμ΄ ν κ³μ’μμ μΈμΆλμ΄ λ€λ₯Έ κ³μ’λ‘ μ κΈλλ μν μ΄μ²΄λ₯Ό μμν΄ λ³΄μΈμ. μμμ±μ μΈμΆ λ° μ κΈ μμ μ΄ λͺ¨λ λ°μνκ±°λ μ ν λ°μνμ§ μλλ‘ λ³΄μ₯ν©λλ€. λμ΄ κ³μ’μμ μΈμΆλμμ§λ§ μμ·¨μΈ κ³μ’μλ μ κΈλμ§ μλ μν©μ΄ λ°μνμ§ μμ΅λλ€.
μΌκ΄μ±: λ°μ΄ν° λ¬΄κ²°μ± μ μ§
μΌκ΄μ±μ νΈλμμ μ΄ λ°μ΄ν°λ² μ΄μ€λ₯Ό ν μ ν¨ν μνμμ λ€λ₯Έ μνλ‘ μ ννλλ‘ λ³΄μ₯ν©λλ€. μ¦, λͺ¨λ νΈλμμ μ΄ κΈ°λ³Έ ν€ μ μ½ μ‘°κ±΄, μΈλ ν€ μ μ½ μ‘°κ±΄ λ° κΈ°ν λ¬΄κ²°μ± μ μ½ μ‘°κ±΄μ ν¬ν¨νμ¬ μ μλ λͺ¨λ κ·μΉμ μ€μν΄μΌ ν©λλ€. νΈλμμ μ΄ μ΄λ¬ν κ·μΉ μ€ νλλΌλ μλ°νλ©΄ λ‘€λ°±λ©λλ€.
μμ: μ μμκ±°λ μμ€ν μμ κ³ κ°μ΄ μ νμ μ£Όλ¬Ένλ κ²½μ° μΌκ΄μ± μμ±μ μ νμ μ¬κ³ μκ° μ¬λ°λ₯΄κ² κ°μνλλ‘ λ³΄μ₯ν©λλ€. μ¬κ³ λ³΄λ€ λ λ§μ νλͺ©μ νλ§€νλ €λ νΈλμμ μ μΌκ΄μ±μ΄ μλ κ²μΌλ‘ κ°μ£Όλμ΄ λ‘€λ°±λ©λλ€.
격리μ±: κ°μ μμ
격리μ±μ λμ νΈλμμ μ΄ μλ‘ κ²©λ¦¬λλλ‘ λ³΄μ₯ν©λλ€. μ¦, νλμ νΈλμμ μ€νμ΄ λ€λ₯Έ νΈλμμ μ€νμ μν₯μ λ―ΈμΉμ§ μμ΅λλ€. κ° νΈλμμ μ λ°μ΄ν°λ² μ΄μ€μ μ‘μΈμ€νλ μ μΌν νΈλμμ μΈ κ²μ²λΌ 격리λμ΄ μ€νλλ κ²μ²λΌ 보μ λλ€. μ΄λ κ² νλ©΄ λν° μ½κΈ°, λ°λ³΅ λΆκ°λ₯ν μ½κΈ° λ° ν¬ν μ½κΈ°μ κ°μ λ¬Έμ κ° λ°©μ§λ©λλ€.
μμ: λ λͺ μ μ¬μ©μκ° λμμ ν곡νΈμ λ§μ§λ§ λ¨μ μ’μμ μμ½νλ €κ³ μλνλ κ²½μ° κ²©λ¦¬μ±μ ν λͺ μ μ¬μ©μλ§ μ’μμ μ±κ³΅μ μΌλ‘ μμ½νλλ‘ λ³΄μ₯ν©λλ€. λ€λ₯Έ μ¬μ©μλ μ’μμ μ¬μ©ν μ μλ€λ κ²μ λ³΄κ² λμ΄ μ΄μ€ μμ½μ λ°©μ§ν©λλ€.
μ§μμ±: λ³κ²½ μ¬νμ μμμ±
μ§μμ±μ νΈλμμ μ΄ μ»€λ°λλ©΄ μ μ λλ μΆ©λκ³Ό κ°μ μμ€ν μ€λ₯κ° λ°μνλλΌλ 컀λ°λ μνλ‘ μ μ§λλλ‘ λ³΄μ₯ν©λλ€. 컀λ°λ λ°μ΄ν°λ μΌλ°μ μΌλ‘ νλ λλΌμ΄λΈ λλ SSDμ κ°μ λΉνλ°μ± μ μ₯μμ μꡬμ μΌλ‘ μ μ₯λλ©° μμ€ν μ λ€μ μμν νμλ 볡ꡬν μ μμ΅λλ€.
μμ: μ¨λΌμΈμμ μνμ μ±κ³΅μ μΌλ‘ ꡬ맀νκ³ νμΈ μ΄λ©μΌμ λ°μ νμλ νΈλμμ μ΄ μꡬμ μ΄λΌκ³ νμ ν μ μμ΅λλ€. μ μμκ±°λ μΉμ¬μ΄νΈμ μλ²μ κ°μμ€λ¬μ΄ μ’ λ£κ° λ°μνλλΌλ μμ€ν μ΄ λ€μ μ¨λΌμΈ μνκ° λλ©΄ ꡬ맀 κΈ°λ‘μ΄ κ³μ μ‘΄μ¬ν©λλ€.
μ μ°ν λμ: BASE
BASEλ κ³ κ°μ©μ± λ° λκ·λͺ¨ νμ₯μ±μ μν΄ μ€κ³λ NoSQL λ°μ΄ν°λ² μ΄μ€λ₯Ό μλ΄νλ λ€λ₯Έ μΌλ ¨μ μμΉμ λλ€. BASEλ κΈ°λ³Έμ μΌλ‘ μ¬μ© κ°λ₯(Basically Available), μννΈ μν(Soft state) λ° μ΅μ’ μΌκ΄μ±(Eventual consistency)μ λνλ λλ€. μ΄λ λΆμ° μμ€ν μ νμ€μ μΈμ νλ©΄μ μ¦κ°μ μΈ μΌκ΄μ±λ³΄λ€ κ°μ©μ± λ° λΆν νμ©μ±μ μ°μ μν©λλ€.
κΈ°λ³Έμ μΌλ‘ μ¬μ© κ°λ₯: νμ μ‘μΈμ€ κ°λ₯
κΈ°λ³Έμ μΌλ‘ μ¬μ© κ°λ₯νλ€λ κ²μ μμ€ν μ΄ μλ²½νκ² μΌκ΄λ μνκ° μλλλΌλ μμ²μ μλ΅νλ€λ μλ―Έμ λλ€. μμ€ν μ μΌλΆκ° μ€ν¨νκ±°λ μ¬μ©ν μ μλ κ²½μ°μλ μλνκ³ μ‘μΈμ€ κ°λ₯μ±μ μ μ§νλ κ²μ λͺ©νλ‘ ν©λλ€. μ΄λ μ격ν μΌκ΄μ±μ μ μ§νκΈ° μν΄ μμ μ μ€λ¨ν μ μλ ACIDμ ꡬλ³λλ μ£Όμ νΉμ§μ λλ€.
μμ: μμ λ―Έλμ΄ νΌλλ μΌλΆ λ°±μλ μλ²κ° μΌμμ μΌλ‘ λ€μ΄λ κ²½μ°μλ κ³μ κ²μλ¬Όμ νμν μ μμ΅λλ€. νΌλμμ λͺ¨λ μ¬μ©μμ μ΅μ μ λ°μ΄νΈλ₯Ό μ ννκ² λ°μνμ§ λͺ»ν μ μμ§λ§, λΈλΌμ°μ§ λ° μνΈ μμ©μ λν μλΉμ€λ κ³μ μ¬μ©ν μ μμ΅λλ€.
μννΈ μν: μν λ³κ²½
μννΈ μνλ λͺ μμ μΈ μ λ ₯ μμ΄λ μμ€ν μ μνκ° μκ°μ΄ μ§λ¨μ λ°λΌ λ³κ²½λ μ μλ€λ μ¬μ€μ λνλ λλ€. μ΄λ μ΅μ’ μΌκ΄μ± λͺ¨λΈ λλ¬Έμ λλ€. λ°μ΄ν°λ ν λ Έλμμ μ λ°μ΄νΈλμμ§λ§ μμ§ λ€λ₯Έ λ Έλλ‘ μ νλμ§ μμ μΌμμ μΈ λΆμΌμΉκ° λ°μν μ μμΌλ©°, μ΄λ κ²°κ΅ ν΄κ²°λ κ²μ λλ€.
μμ: λΆμ° μμ νλ«νΌμμ νλ‘ν μ¬μ§μ μ λ°μ΄νΈνλ κ²½μ° λ€λ₯Έ μ¬μ©μλ μ μ¬μ§μ 보기 μ μ μ μ λμ μ΄μ μ¬μ§μ λ³Ό μ μμ΅λλ€. μμ€ν μ μν(νλ‘ν μ¬μ§)λ λ³κ²½ μ¬νμ μ ννλ κ³Όμ μ μκΈ° λλ¬Έμ μννΈ μνμ λλ€.
μ΅μ’ μΌκ΄μ±: μκ°μ΄ μ§λ¨μ λ°λΌ ν©μ λλ¬
μ΅μ’ μΌκ΄μ±μ BASEμ ν΅μ¬ μμΉμ λλ€. μ΄λ μ§μ λ λ°μ΄ν° νλͺ©μ λν΄ μλ‘μ΄ μ λ°μ΄νΈκ° μμΌλ©΄ κ²°κ΅ ν΄λΉ νλͺ©μ λν λͺ¨λ μ‘μΈμ€μμ λ§μ§λ§μΌλ‘ μ λ°μ΄νΈλ κ°μ λ°ννλ€κ³ λͺ μν©λλ€. κ°λ¨ν λ§ν΄μ μμ€ν μ κ²°κ΅ μΌκ΄μ±μ κ°κ² λμ§λ§ μΌλ§λ 빨리 λλ μΈμ κ·Έλ κ² λ μ§μ λν 보μ₯μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ λΆμ° νκ²½μμ λμ κ°μ©μ±κ³Ό μ±λ₯μ μ»μ μ μμ΅λλ€.
μμ: μ ν κ°κ²© μ λ°μ΄νΈκ° μ΄λ£¨μ΄μ§ κΈλ‘λ² μ μμκ±°λ μΉμ¬μ΄νΈλ₯Ό μμν΄ λ³΄μΈμ. λ€νΈμν¬ λκΈ° μκ° λ° λΆμ° λ°μ΄ν° μ€ν 리μ§λ‘ μΈν΄ λ€λ₯Έ μ§μμ λ€λ₯Έ μ¬μ©μλ μ μ λμ μ΄μ κ°κ²©μ λ³Ό μ μμ΅λλ€. κ·Έλ¬λ κ²°κ΅ λͺ¨λ μ¬μ©μλ λ³κ²½ μ¬νμ΄ λͺ¨λ κ΄λ ¨ μλ²μ μ νλλ©΄ μ λ°μ΄νΈλ κ°κ²©μ λ³΄κ² λ©λλ€.
CAP μ 리: νΌν μ μλ νΈλ μ΄λ μ€ν
ACIDμ BASE κ°μ μ νμ λΈλ£¨μ΄μ μ 리λΌκ³ λ μλ €μ§ CAP μ 리μ μν΄ κ΅¬μ±λλ κ²½μ°κ° λ§μ΅λλ€. μ΄ μ 리λ λΆμ° λ°μ΄ν° μ μ₯μκ° λ€μ μΈ κ°μ§ 보μ₯ μ€ λ κ°μ§ μ΄μμ λμμ μ 곡νλ κ²μ λΆκ°λ₯νλ€κ³ λͺ μν©λλ€.
- μΌκ΄μ±(C): λͺ¨λ μ½κΈ°λ κ°μ₯ μ΅κ·Όμ μ°κΈ°λ₯Ό λ°κ±°λ μ€λ₯λ₯Ό λ°μ΅λλ€.
- κ°μ©μ±(A): λͺ¨λ μμ²μ (μ€λ₯κ° μλ) μλ΅μ λ°μ§λ§ κ°μ₯ μ΅κ·Όμ μ°κΈ°κ° ν¬ν¨λμ΄ μλ€λ 보μ₯μ μμ΅λλ€.
- λΆν νμ©μ±(P): μμ€ν μ λ Έλ κ°μ λ€νΈμν¬μμ μμμ μμ λ©μμ§κ° μμ (λλ μ§μ°)λλλΌλ κ³μ μλν©λλ€.
λͺ¨λ λΆμ° μμ€ν μμ λ€νΈμν¬ λΆν μ λΆκ°νΌν©λλ€. λ°λΌμ μ€μ νΈλ μ΄λ μ€νλ λΆν μ΄ λ°μν λ μΌκ΄μ±κ³Ό κ°μ©μ± μ¬μ΄μ λλ€.
- CP μμ€ν : μ΄λ¬ν μμ€ν μ μΌκ΄μ± λ° λΆν νμ©μ±μ μ°μ μν©λλ€. λΆν μ΄ λ°μνλ©΄ λͺ¨λ λ Έλκ° λμΌνκ³ μΌκ΄λ λ°μ΄ν°λ₯Ό λ°ννλλ‘ κ°μ©μ±μ ν¬μν©λλ€.
- AP μμ€ν : μ΄λ¬ν μμ€ν μ κ°μ©μ± λ° λΆν νμ©μ±μ μ°μ μν©λλ€. λΆν μ΄ λ°μνλ©΄ κ°μ©μ±μ μ μ§νμ§λ§ μ€λλ λ°μ΄ν°λ₯Ό λ°νν μ μμΌλ©° μ΅μ’ μΌκ΄μ±μ μ§ν₯ν©λλ€.
κ°λ ₯ν ACID μμ±μ κ°μ§ κΈ°μ‘΄ SQL λ°μ΄ν°λ² μ΄μ€λ μ’ μ’ CP μμ€ν μ μ§ν₯νμ¬ μ격ν μΌκ΄μ±μ μ μ§νκΈ° μν΄ λ€νΈμν¬ λΆν μ κ°μ©μ±μ ν¬μν©λλ€. BASE μμΉμ μ€μνλ λ§μ NoSQL λ°μ΄ν°λ² μ΄μ€λ AP μμ€ν μ μ§ν₯νμ¬ κ°μ©μ±μ μ°μ μνκ³ μΌμμ μΈ λΆμΌμ±μ νμ©ν©λλ€.
ACID vs. BASE: μ£Όμ μ°¨μ΄μ μμ½
λ€μμ ACIDμ BASEμ μ£Όμ μ°¨μ΄μ μ κ°μ‘°νλ νμ λλ€.
| κΈ°λ₯ | ACID | BASE |
|---|---|---|
| μ£Όμ λͺ©ν | λ°μ΄ν° λ¬΄κ²°μ± λ° μ λ’°μ± | λμ κ°μ©μ± λ° νμ₯μ± |
| μΌκ΄μ± λͺ¨λΈ | κ°λ ₯ν μΌκ΄μ±(μ¦μ) | μ΅μ’ μΌκ΄μ± |
| λΆν μ€ κ°μ©μ± | κ°μ©μ±μ ν¬μν μ μμ | κ°μ©μ± μ°μ |
| λ°μ΄ν° μν | νμ μΌκ΄μ | μΌμμ μΌλ‘ μΌκ΄λμ§ μμ μ μμ(μννΈ μν) |
| νΈλμμ μ ν | 볡μ‘ν λ€λ¨κ³ νΈλμμ μ§μ | μΌλ°μ μΌλ‘ λ κ°λ¨ν μμ μ§μ; 볡μ‘ν νΈλμμ κ΄λ¦¬κ° λ μ΄λ €μ |
| μΌλ°μ μΈ μ¬μ© μ¬λ‘ | κΈμ΅ μμ€ν , μ μμκ±°λ 체ν¬μμ, μ¬κ³ κ΄λ¦¬ | μμ λ―Έλμ΄ νΌλ, μ€μκ° λΆμ, μ½ν μΈ κ΄λ¦¬ μμ€ν , λκ·λͺ¨ λ°μ΄ν° μ¨μ΄νμ°μ§ |
| κΈ°λ³Έ κΈ°μ | κ΄κ³ν λ°μ΄ν°λ² μ΄μ€(SQL) | NoSQL λ°μ΄ν°λ² μ΄μ€(μ: νΉμ ꡬμ±μ Cassandra, DynamoDB, MongoDB) |
μ ν μκΈ°: κΈλ‘λ² μ ν리μΌμ΄μ μ λν μ€μ κ³ λ € μ¬ν
ACID λλ BASE λͺ¨λΈ(λλ νμ΄λΈλ¦¬λ μ κ·Ό λ°©μ)μ μ±νν μ§ μ¬λΆμ λν κ²°μ μ μ ν리μΌμ΄μ λ° μ μΈκ³ μ¬μ©μμ νΉμ μꡬ μ¬νμ λ°λΌ ν¬κ² λ¬λΌμ§λλ€.
κΈλ‘λ² μ ν리μΌμ΄μ μ ACID μ ν:
ACIDλ λ°μ΄ν° μ νμ± λ° μ¦κ°μ μΈ μΌκ΄μ±μ΄ νμ λΆκ°λ₯ν κ²½μ° μ νΈλλ μ νμ λλ€. μ΄λ λ€μκ³Ό κ°μ κ²½μ°μ μ€μν©λλ€.
- κΈμ΅ κ±°λ: κΈμ μ κ°μΉκ° μ ννκ³ μλͺ»λ μκΈμ΄ μμ€λκ±°λ μμ±λμ§ μλλ‘ λ³΄μ₯νλ κ²μ΄ κ°μ₯ μ€μν©λλ€. κΈλ‘λ² λ± νΉ μμ€ν , κ²°μ κ²μ΄νΈμ¨μ΄ λ° κ±°λ νλ«νΌμ ACID μμ±μ ν¬κ² μμ‘΄ν©λλ€. μλ₯Ό λ€μ΄, κ΅κ²½ κ° μ‘κΈμ μμμ μ΄μ΄μΌ νλ©°, μμ·¨μΈμ κ³μ μ μ κΈλ λ μ ννκ² μ‘κΈμΈμ κ³μ μμ μΈμΆλμ΄μΌ νλ©°, μ€κ° μνκ° νμλκ±°λ κ°λ₯ν΄μλ μ λ©λλ€.
- μ¬κ³ κ΄λ¦¬: κΈλ‘λ² μλ§€ μ΄μμμ μ νν μ€μκ° μ¬κ³ λ κ³Όμ νλ§€λ₯Ό λ°©μ§νλ λ° μ€μν©λλ€. λμΏμ κ³ κ°μ λ°λμ κ³ κ°μ΄ λ°©κΈ κ΅¬λ§€λ₯Ό μλ£ν κ²½μ° λ§μ§λ§ νλͺ©μ ꡬ맀ν μ μμ΄μΌ ν©λλ€.
- μμ½ μμ€ν : μ¬κ³ μ λ§μ°¬κ°μ§λ‘ λ€λ₯Έ μκ°λμ μλ μ¬μ©μλ‘λΆν°μ λμ μμ²μλ λΆκ΅¬νκ³ νκ³΅νΈ μ’μ λλ νΈν κ°μ€μ΄ ν λ²λ§ μμ½λλλ‘ λ³΄μ₯νλ €λ©΄ μ격ν νΈλμμ 무결μ±μ΄ νμν©λλ€.
- μ€μν λ°μ΄ν° 무결μ±: λ°μ΄ν° μμ λλ λΆμΌμΉλ‘ μΈν΄ μ¬κ°ν κΈμ μ μμ€, λ²μ μ± μ λλ μλΉν νν μμμΌλ‘ μ΄μ΄μ§ μ μλ λͺ¨λ μ ν리μΌμ΄μ μ ACID μ€μλ₯Ό ν΅ν΄ μ΄μ μ μ»μ μ μμ΅λλ€.
μ€ν κ°λ₯ν ν΅μ°°λ ₯: κΈλ‘λ² λ²μμ ACID νΈν μμ€ν μ ꡬνν λλ μ§λ¦¬μ μΌλ‘ λΆμ°λ μ¬μ©μ κ°μ λΆμ° νΈλμμ λ° μ μ¬μ μΈ λ€νΈμν¬ λκΈ° μκ°μ΄ μ±λ₯μ λ―ΈμΉλ μν₯μ κ³ λ €νμΈμ. λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§λ₯Ό μ μ€νκ² μ€κ³νκ³ μΏΌλ¦¬λ₯Ό μ΅μ ννμ¬ μ΄λ¬ν μν₯μ μνν©λλ€.
κΈλ‘λ² μ ν리μΌμ΄μ μ BASE μ ν:
BASEλ μ¦κ°μ μΈ μΌκ΄μ±μ ν¬μνλλΌλ κ³ κ°μ©μ± λ° νμ₯μ±μ΄ νμν μ ν리μΌμ΄μ μ μ΄μμ μ λλ€. μ΄λ λ€μκ³Ό κ°μ κ²½μ°μ μΌλ°μ μ λλ€.
- μμ λ―Έλμ΄ λ° μ½ν μΈ νλ«νΌ: μ¬μ©μλ μ€λ¨ μμ΄ νΌλμ μ‘μΈμ€νκ³ , μ λ°μ΄νΈλ₯Ό κ²μνκ³ , μ½ν μΈ λ₯Ό λ³Ό κ²μΌλ‘ μμν©λλ€. μΉκ΅¬μ κ²μλ¬Όλ³΄λ€ μ½κ° μ€λλ λ²μ μ 보λ κ²μ νμ©λμ§λ§ νλ«νΌμ μ‘μΈμ€ν μ μμ΄μλ μ λ©λλ€. μλ₯Ό λ€μ΄ νΈμ£Όμμ λΈλ‘κ·Έ κ²μλ¬Όμ μλ‘μ΄ λκΈμ΄ νμλλ λ° λͺ λΆμ΄ 걸릴 μ μμ§λ§ λΈλΌμ§μ λ μκ° λ€λ₯Έ λκΈμ μ½κ³ κ²μλ¬Ό μ체λ₯Ό μ½λ κ²μ΄ λ°©ν΄λ°μ§ μμμΌ ν©λλ€.
- μ¬λ¬Ό μΈν°λ·(IoT) λ°μ΄ν°: μ μΈκ³μ μΌλ‘ λ°©λν μμ μΌμ λ°μ΄ν°λ₯Ό μμ±νλ μ₯μΉλ μ΄ μ 보λ₯Ό μ§μμ μΌλ‘ μμ§νκ³ μ μ₯ν μ μλ μμ€ν μ΄ νμν©λλ€. μ΅μ’ μΌκ΄μ±μ ν΅ν΄ κ°νμ μΈ λ€νΈμν¬ μ°κ²°μ ν΅ν΄μλ λ°μ΄ν°λ₯Ό μΊ‘μ²ν μ μμ΅λλ€.
- μ€μκ° λΆμ λ° λ‘κΉ : μ¦κ°μ μΈ μ νμ±μ΄ λ°λμ§νμ§λ§ μ£Όμ λͺ©νλ μ’ μ’ λ°©λν λ°μ΄ν° μ€νΈλ¦Όμ μ²λ¦¬νκ³ λΆμνλ κ²μ λλ€. μ¬λ¬ μ§μμμ λ°μ΄ν° μ§κ³μ μ½κ°μ μ§μ°μ΄ λ°μνλ κ²μ μΌλ°μ μΌλ‘ νμ©λ©λλ€.
- κ°μΈν λ° κΆμ₯ μ¬ν: μ¬μ©μ κΈ°λ³Έ μ€μ λ° λμμ λμμμ΄ μ§ννκ³ μμ΅λλ€. κ°μΈνλ κΆμ₯ μ¬νμ μ 곡νλ μμ€ν μ μλΉμ€κ° μλ΅νλ ν μ½κ° μ§μ°λ μ λ°μ΄νΈλ₯Ό νμ©ν μ μμ΅λλ€.
μ€ν κ°λ₯ν ν΅μ°°λ ₯: BASEλ₯Ό μ¬μ©νλ κ²½μ° μ΅μ’ μΌκ΄μ±μ μλ―Έλ₯Ό μ κ·Ήμ μΌλ‘ κ΄λ¦¬νμΈμ. μ¬μ©μ κΈ°λμΉλ₯Ό κ΄λ¦¬νκΈ° μν΄ μΆ©λ ν΄κ²° λ©μ»€λμ¦, λ²μ κ΄λ¦¬ λ° μ μ¬μ μΈ μ€λλ¨μ μ μνλ μ¬μ©μ λμ νμκΈ°μ κ°μ μ λ΅μ ꡬνν©λλ€.
νμ΄λΈλ¦¬λ μ κ·Ό λ°©μ λ° μ΅μ μ루μ
μΈμμ΄ νμ νλ°±μΈ κ²μ μλλλ€. λ§μ μ΅μ μ ν리μΌμ΄μ μ ACIDμ BASE μμΉμ μ₯μ μ κ²°ν©νμ¬ νμ΄λΈλ¦¬λ μ κ·Ό λ°©μμ νμ©ν©λλ€.
- Polyglot Persistence: μ‘°μ§μ μ’ μ’ μ ν리μΌμ΄μ μ μλ‘ λ€λ₯Έ λΆλΆμ λν΄ μλ‘ λ€λ₯Έ λ°μ΄ν°λ² μ΄μ€ κΈ°μ μ μ¬μ©ν©λλ€. ν΅μ¬ κΈμ΅ μλΉμ€λ ACID νΈν SQL λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©ν μ μμΌλ©°, μ¬μ©μ λμ νλ νΌλλ BASE μ§ν₯ NoSQL λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©ν μ μμ΅λλ€.
- μ‘°μ κ°λ₯ν μΌκ΄μ±μ κ°μΆ λ°μ΄ν°λ² μ΄μ€: μΌλΆ NoSQL λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©νλ©΄ κ°λ°μκ° μ½κΈ° μμ μ νμν μΌκ΄μ± μμ€μ μ‘°μ ν μ μμ΅λλ€. μ€μν μ½κΈ°μλ λ κ°λ ₯ν μΌκ΄μ±μ μ ννκ³ λ μ€μν μ½κΈ°μλ λ μ½ν μΌκ΄μ±μ μ ννμ¬ μ±λ₯κ³Ό μ νμ±μ κ· νμ λ§μΆ μ μμ΅λλ€. μλ₯Ό λ€μ΄, Apache Cassandraλ₯Ό μ¬μ©νλ©΄ μ½κΈ° λ° μ°κΈ° μμ μ λν μΌκ΄μ± μμ€(μ: ONE, QUORUM, ALL)μ μ§μ ν μ μμ΅λλ€.
- λΆμ° νΈλμμ μ λν Saga: μ¬λ¬ μλΉμ€μ κ±Έμ³ μκ³ ACIDμ κ°μ 보μ¦μ΄ νμν 볡μ‘ν λΉμ¦λμ€ νλ‘μΈμ€μ κ²½μ° Saga ν¨ν΄μ μ¬μ©ν μ μμ΅λλ€. Sagaλ κ° νΈλμμ μ΄ λ¨μΌ μλΉμ€ λ΄μμ λ°μ΄ν°λ₯Ό μ λ°μ΄νΈνλ μΌλ ¨μ λ‘컬 νΈλμμ μ λλ€. κ° λ‘컬 νΈλμμ μ sagaμμ λ€μ λ‘컬 νΈλμμ μ νΈλ¦¬κ±°νλ λ©μμ§ λλ μ΄λ²€νΈλ₯Ό κ²μν©λλ€. λ‘컬 νΈλμμ μ΄ μ€ν¨νλ©΄ sagaλ μ΄μ νΈλμμ μ μ€ν μ·¨μνκΈ° μν΄ λ³΄μ νΈλμμ μ μ€νν©λλ€. μ΄λ λ¨μΌ λͺ¨λ리μ ACID νΈλμμ μ μμ‘΄νμ§ μκ³ λΆμ° μμ€ν κ°μ μΌκ΄μ±μ κ΄λ¦¬νλ λ°©λ²μ μ 곡ν©λλ€.
κ²°λ‘ : κΈλ‘λ² λ°μ΄ν° μΌκ΄μ±μ μν μν€ν μ²
ACIDμ BASE κ°μ μ νμ λ¨μν κΈ°μ μ μΈλΆ μ¬νμ΄ μλλΌ κΈλ‘λ² κ·λͺ¨μμ μ ν리μΌμ΄μ μ μ λ’°μ±, νμ₯μ± λ° μ¬μ©μ κ²½νμ μ¬μ€ν μν₯μ λ―ΈμΉλ μ λ΅μ κ²°μ μ λλ€.
ACIDλ νκ³ ν λ°μ΄ν° 무결μ±κ³Ό νΈλμμ μ λ’°μ±μ μ 곡νμ¬ μ½κ°μ λΆμΌμΉλΌλ μ¬κ°ν κ²°κ³Όλ₯Ό μ΄λν μ μλ μ€μν μ ν리μΌμ΄μ μ νμμ μ λλ€. κ·Έ κ°μ μ λͺ¨λ μμ μ΄ μλ²½νκ³ λ°μ΄ν°λ² μ΄μ€ μνκ° νμ κΉ¨λνλλ‘ λ³΄μ₯νλ λ° μμ΅λλ€.
λ°λ©΄μ BASEλ λ€νΈμν¬ λ³΅μ‘μ±μ μ§λ©΄νμ¬ κ°μ©μ± λ° λ³΅μλ ₯μ μΉνΈνμ¬ μ§μμ μΈ μ κ·Όμ±μ΄ νμνκ³ μΌμμ μΈ λ°μ΄ν° λ³λμ νμ©ν μ μλ μ ν리μΌμ΄μ μ μ΄μμ μ λλ€. κ·Έ νμ κΉλ€λ‘μ΄ μ‘°κ±΄μμλ μμ€ν μ μ€ννκ³ μ μΈκ³ μ¬μ©μμκ² μ κ·Ό κ°λ₯νκ² μ μ§νλ λ° μμ΅λλ€.
κΈλ‘λ² μ ν리μΌμ΄μ μ μ€κ³νκ³ κ΅¬μΆν λ μꡬ μ¬νμ μ μ€νκ² νκ°νμΈμ.
- μ λ§ νμν λ°μ΄ν° μΌκ΄μ± μμ€μ 무μμΈκ°μ? μ¬μ©μκ° μ΅μ μ λ°μ΄νΈλ₯Ό 보λ λ° μ½κ°μ μ§μ°μ νμ©ν μ μμ΅λκΉ, μλλ©΄ μ¦κ°μ μΈ μ νμ±μ΄ μ€μν©λκΉ?
- μ§μμ μΈ κ°μ©μ±μ μΌλ§λ μ€μν©λκΉ? μΌκ΄μ± κ²μ¬λ‘ μΈν λ€μ΄νμμ΄ μ°λ°μ μΈ λ°μ΄ν° λΆμΌμΉλ³΄λ€ λ ν° νΌν΄λ₯Ό μ€ μ μμ΅λκΉ?
- μ¬μ©μμ μμ λ‘λ λ° μ§λ¦¬μ λΆν¬λ μ΄λ»μ΅λκΉ? κΈλ‘λ² λ‘λ μ νμ₯μ±κ³Ό μ±λ₯μ΄ μ£Όμ κ³ λ € μ¬νμ λλ€.
ACIDμ BASEμ κΈ°λ³Έ μ리λ₯Ό μ΄ν΄νκ³ CAP μ 리μ μλ―Έλ₯Ό κ³ λ €νλ©΄ κΈλ‘λ² λμ§νΈ μ²μ€μ λ€μν μꡬ μ¬νμ μΆ©μ‘±νλ κ°λ ₯νκ³ μμ μ μ΄λ©° νμ₯ κ°λ₯ν λ°μ΄ν° μμ€ν μ μ€κ³νκΈ° μν μ 보λ₯Ό λ°νμΌλ‘ κ²°μ μ λ΄λ¦΄ μ μμ΅λλ€. ν¨κ³Όμ μΈ κΈλ‘λ² λ°μ΄ν° κ΄λ¦¬λ₯Ό μν μ¬μ μ μ’ μ’ μ΄λ¬ν νΈλ μ΄λ μ€νλ₯Ό νμνκ³ , λ§μ κ²½μ° λ μΈκ³μ μ₯μ μ νμ©νλ νμ΄λΈλ¦¬λ μ λ΅μ μμ©νλ κ²μ ν¬ν¨ν©λλ€.